home *** CD-ROM | disk | FTP | other *** search
/ Maxim: No Anorak Required 2 / Maxim: No Anorak Required 2.iso / flagtowr / setup.mst < prev    next >
Text File  |  1996-02-15  |  24KB  |  696 lines

  1. rem ****************************************************************************
  2. rem *
  3. rem *    File:        setup.mst
  4. rem *
  5. rem *    Author:        Clive Nutter
  6. rem *
  7. rem *    Purpose:    Script file for MS setup engine.
  8. rem *
  9. rem *    Change History:
  10. rem *
  11. rem *        01.09.95, CLN    Created, based on AV title setup.mst.
  12. rem *        02.09.95, CLN    Added QuickTime version checking.
  13. rem *        03.09.95, CLN    Amended so each promo has its own copy of
  14. rem *                engine.
  15. rem *        06.09.95, CLN    Added code for First World War & War in the
  16. rem *                Pacific promos.
  17. rem *        15.09.95, CLN    Add DLL call to update system configuration.
  18. rem *                Add code to display read-me file.
  19. rem *        09.10.95, CLN    Cater for advert(s) and retail loop variants.
  20. rem *        04.01.96, CLN    Allow selection of VfW and WinToon and engine
  21. rem *                sharing options.
  22. rem *
  23. rem ****************************************************************************
  24.  
  25. '$INCLUDE 'setupapi.inc'
  26. '$INCLUDE 'mscpydis.inc'    ''System
  27. '$INCLUDE 'msdetect.inc'    ''Detects Available Disk Space      
  28. '$INCLUDE 'pmgrdde.inc'        ''Program Manager DDE
  29. '$INCLUDE 'system.inc'        ''FlagTower system configuration
  30. '$INCLUDE 'flagtowr.inc'    ''FlagTower title values
  31.  
  32. ''Dialog ID's
  33. CONST WELCOME       = 100
  34. CONST ASKQUIT       = 200
  35. CONST ASKPATH       = 300
  36. CONST EXITFAILURE   = 400
  37. CONST EXITQUIT      = 600
  38. CONST EXITSUCCESS   = 700
  39. CONST APPHELP       = 900
  40. CONST SMALLWIN      = 2200
  41. CONST RESTART       = 2600
  42. CONST RESTARTII     = 2700
  43. CONST BADPATH       = 6400
  44.  
  45. 'GLOBAL SizeReq&        '' Total Disk Size required for installation
  46.  
  47. GLOBAL WinDir$            ''Windows directory
  48. GLOBAL WinSysDir$        ''Windows system directory
  49. GLOBAL WinSys32Dir$        ''Win32 system directory
  50. GLOBAL MinorVer%        ''Windows minor version number
  51. GLOBAL OnNT$            ''NT flag
  52.  
  53. GLOBAL SrcDir$            ''Source directory                   
  54. GLOBAL CwdDir$            ''CWD/temporary directory                   
  55. GLOBAL CDDrive$            ''CD-Rom drive letter
  56. GLOBAL DbPath$            ''Database directory
  57.  
  58. GLOBAL AVDest$            ''Directory to put AV engine libraries
  59. GLOBAL AVDestRoot$        '' Root directory for title
  60.  
  61. global isInstallQTW as integer
  62.  
  63. ''----- External functions called by Video for Windows setup
  64. DECLARE FUNCTION ExitWindowsExec  LIB "user" (Exec$, Param$) AS INTEGER
  65. DECLARE FUNCTION OnWindowsNT LIB "iniupd.dll" AS INTEGER
  66. DECLARE SUB      Reboot LIB "iniupd.dll"
  67. DECLARE FUNCTION VflatdPresent LIB "iniupd.dll" AS INTEGER
  68. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  69.  
  70. ''----- External functions called by WinG setup
  71. DECLARE FUNCTION GetRealSystemDirectory LIB "setuphlp.dll" (szDir$, cbBuf%) AS INTEGER
  72. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.dll" (szOrig$, szNew$) AS INTEGER
  73. DECLARE SUB      RenameFilePlease LIB "setuphlp.dll" (szOrig$, szNew$)
  74. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  75.                  
  76. ''----- Effects library functions used
  77. DECLARE FUNCTION DivertBackMessage LIB "avsetup.dll" (WinHandle%, InstHandle%) AS INTEGER
  78. DECLARE SUB      MaxWindowArea LIB "avsetup.dll" (WinHandle%)
  79. DECLARE FUNCTION ShowBitmap LIB "avsetup.dll" (WinHandle%, szName$, nFx%, nFxTime%) AS INTEGER          
  80. DECLARE FUNCTION SetFileAttribute LIB "avsetup.dll" (szName$, nMode%) AS INTEGER
  81. DECLARE FUNCTION setDOSFileAttr LIB "avsetup.dll" (szName$, nAttr%, nIsOverwrite%) AS INTEGER
  82. DECLARE FUNCTION getSystemRAM LIB "avsetup.dll" AS INTEGER
  83. DECLARE FUNCTION readTitleDescription LIB "avsetup.dll" (szDesc$, lenDesc%, szDescFile$) AS INTEGER
  84. DECLARE FUNCTION fnnGetQTWVersion LIB "qtw_vers.dll" (ourVersion&) AS INTEGER
  85. DECLARE FUNCTION CallModifyCONFIG LIB "confchk.dll" (WinHandle%) AS INTEGER
  86.  
  87. ''----- Local functions
  88. DECLARE FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) AS INTEGER
  89. DECLARE FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) AS INTEGER
  90. declare sub     CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ )
  91. declare sub     CopyTitleDatabase(pathDatabase$, sectDatabase$ )
  92. declare sub     InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ )
  93. declare sub     CreateTitleIcon( pathBinary$, dllFile$, iconNo$ )
  94. declare sub     CreateMenuIcon( pathBinary$ )
  95. DECLARE SUB      Install
  96. DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING
  97. DECLARE SUB      UpdateWinG32(szOrig$)
  98.  
  99. INIT:
  100.  
  101.     CUIDLL$   = "ftcuistf.dll"          ''Custom user interface dll
  102.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  103.  
  104.     MajorVer%      = GetWindowsMajorVersion()
  105.     MinorVer%      = GetWindowsMinorVersion()
  106.     Processor%      = GetProcessorType()
  107.     WinDir$       = GetWindowsDir()
  108.     WinSysDir$      = GetWindowsSysDir()
  109.     WinSys32Dir$  = WinDir$ + "system32"
  110.     SrcDir$       = GetSymbolValue("STF_SRCDIR")
  111.     CwdDir$       = GetSymbolValue("STF_CWDDIR")
  112.     
  113.     'Make sure the user's system can handle Video for Windows
  114.     dummy% = CheckVideoSystem(MajorVer%, MinorVer%, Processor%) 
  115.     IF OnWindowsNT() THEN
  116.         OnNT$ = "TRUE"
  117.     END IF
  118.                            
  119.     'Read setup's .INF file                           
  120.     szInf$ = GetSymbolValue("STF_SRCINFPATH")                                 
  121.     IF szInf$ = "" THEN
  122.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  123.     END IF
  124.     ReadInfFile szInf$
  125.  
  126.     'Divert paint messages of background window to our own routine                      
  127.     dummy% = DivertBackMessage(HwndFrame(), HinstFrame())
  128.     MaxWindowArea(HwndFrame())
  129.     dummy% = ShowBitmap(HwndFrame(), CwdDir$+"logo.bmp",106,1000)     
  130.             
  131.                
  132. WELCOME:
  133.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  134.  
  135.     IF sz$ = "CONTINUE" THEN
  136.         UIPop 1
  137.     ELSE
  138.         GOSUB ASKQUIT
  139.         GOTO WELCOME
  140.     END IF
  141.  
  142.                                                       
  143. GETPATH: 
  144.     AVDest$ = Dir_DefaultInstall
  145.  
  146.     SetSymbolValue "EditTextIn", AVDest$
  147.     SetSymbolValue "EditTextOut", AVDest$
  148.     SetSymbolValue "EditFocus", "END"
  149. GETPATHL1:
  150.     SetSymbolValue "DLGEVENT", ""
  151.  
  152.     sz$ = UIStartDlg(CUIDLL$, ASKPATH, "FEditDlgProc", 0, "")
  153.     AVDest$ = GetSymbolValue("EditTextOut")
  154.     AVDestRoot$ = AVDest$
  155.  
  156.     IF sz$ = "CONTINUE" THEN
  157.         IF IsDirWritable(AVDest$) = 0 THEN 
  158.            GOSUB BADPATH
  159.            GOTO GETPATHL1
  160.         END IF
  161.         UIPop 1
  162.     ELSE 
  163.         IF sz$ = "EXIT" THEN
  164.             GOSUB ASKQUIT
  165.         END IF
  166.         GOTO GETPATH        
  167.     END IF
  168.           
  169.           
  170.     if not Dir_Group = "" then
  171.         AVDest$ = AVDest$ + Dir_Group
  172.     end if
  173.  
  174.     rem *** Prepare copy list
  175.  
  176.     ClearCopyList                                           
  177.  
  178. '$INCLUDE 'init.mst'
  179.  
  180. '$ifdef IsUsingVfW
  181.  
  182.     '' ------------------- Copy list for Video for Windows --------------------
  183.     ''Remove DCISVGA file
  184.  
  185.     RemoveFile WinSysDir$+"dcisvga.drv", cmoForce
  186.  
  187.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            
  188.             'These files not necessary on Windows NT
  189.         AddSectionFilesToCopyList "VfW MPlayer", SrcDir$, WinDir$
  190.         AddSectionFilesToCopyList "VfW OLE2", SrcDir$, WinSysDir$
  191.     END IF
  192.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  193.     AddSectionFilesToCopyList "VfW ACM Drivers", SrcDir$, WinSysDir$
  194.     AddSectionFilesToCopyList "VfW AVICodecs", SrcDir$, WinSysDir$
  195.     IF OnNT$ = "TRUE" THEN
  196.         AddSectionFilesToCopyList "VfW NT MSVideo", SrcDir$, WinSys32Dir$
  197.     ENDIF
  198. '$endif
  199.  
  200. '' --------------------- Copy list for WinG -----------------------
  201.     AddSectionFilesToCopyList "WinG runtime", SrcDir$, WinSysDir$
  202.     Dest1$ = MakePath (WinSysDir$,"Wing32.dll")
  203.     Dest2$ = MakePath (WinSysDir$,"Wing32.xxx")
  204.     RenameFilePlease Dest1$, Dest2$
  205.  
  206. '$ifdef IsUsingWinToon
  207.  
  208.     '' ---------------------- Copy list for WinToon -----------------------
  209.     AddSectionFilesToCopyList "WinToon runtime", SrcDir$, WinSysDir$
  210. '$endif
  211.  
  212. '' --------------------- Copy list for MediaView ----------------------
  213.     AddSectionFilesToCopyList "MediaView runtime", SrcDir$, WinSysDir$
  214.  
  215.     rem *** Copy list for QuickTime
  216.  
  217.     isInstallQTW = 0
  218.  
  219.     qtwVersion& = 8748
  220.  
  221.     s% = fnnGetQTWVersion( qtwVersion& )
  222.  
  223.     if s% = 1 then
  224.         isInstallQTW = 1
  225.  
  226.         AddSectionFilesToCopyList "QuickTime 2.02 runtime", SrcDir$, WinSysDir$
  227.     endif
  228.  
  229. '' ------------------------ Copy list for ADS -------------------------
  230.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  231.  
  232. '' ------------------------ Copy list for AAPLAY -------------------------
  233.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  234.  
  235. '$ifdef IsEncrypted
  236.     rem *** Copy list for C-Dilla
  237.  
  238.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  239. '$endif
  240.  
  241.     rem *** Common utilities and system files
  242.  
  243.     AddSectionFilesToCopyList Sect_GenericUtility, SrcDir$, AVDestRoot$
  244.     AddSectionFilesToCopyList Sect_GenericSystem, SrcDir$, WinSysDir$
  245.  
  246.     if not Dir_Group = "" then
  247.         AddSectionFilesToCopyList Sect_GenericGroupUtility, SrcDir$, AVDest$
  248.         AddSectionFilesToCopyList Sect_GenericGroupBinary, SrcDir$, AVDest$ + Dir_Binary
  249.     end if
  250.  
  251. '$INCLUDE 'copylist.mst'
  252.  
  253. '' -------- Check space on hard disk --------
  254.     SizeReq& = GetCopyListCost ("","", "")
  255.     IF SizeReq& <> 0 THEN
  256.         GOSUB SMALLWIN
  257.         END
  258.     END IF
  259.  
  260.                               
  261. '' Perform install                              
  262.     Install
  263.  
  264. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  265. '' else, it gives the user the choice
  266.     RESTRT% = RestartListEmpty ()
  267.     Exe$ = WinDir$ + "\_msrstrt.exe"
  268.     Batch$ = WinDir$ + "\_mssetup.bat"
  269.     empty$ = ""
  270.  
  271. RESTART:
  272.     IF RESTRT% = 0 THEN
  273.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  274.        IF sz$ = "REACTIVATE" THEN
  275.                GOTO RESTART
  276.        ENDIF
  277.        I% = ExitExecRestart ()
  278.        RemoveFile Exe$, cmoForce
  279.        RemoveFile Batch$, cmoForce
  280.        END
  281.     ELSE
  282.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  283.        IF sz$ = "CONTINUE" THEN
  284.                I% = ExitWindowsExec (Exe$, empty$)                             
  285.                IF I% = 0 THEN
  286.                    GOTO RESTART
  287.                ELSE
  288.                  END
  289.                ENDIF
  290.        ELSEIF sz$ = "EXIT" THEN
  291.                UIPopAll
  292.               END
  293.        ELSEIF sz$ = "REACTIVATE" THEN
  294.                GOTO RESTART
  295.        ELSE
  296.               UIPop 1
  297.        END IF
  298.     END IF
  299.  
  300.  
  301. QUIT:
  302.     ON ERROR GOTO ERRQUIT
  303.  
  304.     IF ERR = 0 THEN
  305.         dlg% = EXITSUCCESS
  306.     ELSEIF ERR = STFQUIT THEN
  307.         dlg% = EXITQUIT
  308.     ELSE
  309.         dlg% = EXITFAILURE
  310.     END IF
  311. QUITL1:
  312.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  313.     IF sz$ = "REACTIVATE" THEN
  314.         GOTO QUITL1
  315.     END IF
  316.     UIPop 1
  317.     END
  318.  
  319. ERRQUIT:
  320.     i% = DoMsgBox("An installation problem occurred.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  321.     END
  322.  
  323.  
  324. ASKQUIT:
  325.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  326.  
  327.     IF sz$ = "EXIT" THEN
  328.         UIPopAll
  329. ''        ERROR STFQUIT
  330.     END
  331.     ELSEIF sz$ = "REACTIVATE" THEN
  332.         GOTO ASKQUIT
  333.     ELSE
  334.         UIPop 1
  335.     END IF
  336.     RETURN
  337.  
  338. SMALLWIN:
  339.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  340.     IF sz$ = "REACTIVATE" THEN
  341.         GOTO SMALLWIN
  342.     END IF
  343.     UIPop 1
  344.     RETURN
  345.           
  346. BADPATH:
  347.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  348.     IF sz$ = "REACTIVATE" THEN
  349.         GOTO BADPATH
  350.     END IF
  351.     UIPop 1
  352.     RETURN
  353.  
  354. '**
  355. '** Purpose:
  356. '**     Performs all installation operations.
  357. '** Arguments:
  358. '**     none.
  359. '** Returns:
  360. '**     none.
  361. '*************************************************************************
  362. SUB Install STATIC           
  363.  
  364.     SetRestartDir WinDir$
  365.     CopyFilesInCopyList
  366.     UpdateWinG32 WinSysDir$
  367.  
  368. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  369.     inia$ = MakePath(WinDir$, "win.ini")
  370.     inib$ = MakePath(WinDir$, "win.ftw")
  371.     CopyFile inia$, inib$, cmoOverwrite, 0
  372.     inia$ = MakePath(WinDir$, "system.ini")
  373.     inib$ = MakePath(WinDir$, "system.ftw")
  374.     CopyFile inia$, inib$, cmoOverwrite, 0
  375.                                                                               
  376.                                                                               
  377. '$ifdef IsUsingVfW
  378.  
  379.     ''----------------- Update INI files for Video for Windows ---------------
  380.     ''Updating WIN.INI and SYSTEM.INI
  381.     ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  382.  
  383.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  384.         IF VflatdPresent() = 0 THEN
  385.             CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  386.         END IF
  387.     END IF
  388.  
  389.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  390.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  391.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  392.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  393.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  394.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  395.     IF I% = 0  THEN
  396.         CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  397.     END IF
  398.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  399.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  400.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  401.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  402.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  403.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  404.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  405.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  406.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  407. '$endif
  408.  
  409.     if isInstallQTW = 1 then
  410.  
  411.         rem *** Update INI files for QuickTime
  412.  
  413.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  414.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  415.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  416.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  417.  
  418.         rem *** Create QTW.INI
  419.         ini$ = MakePath(WinDir$, "qtw.ini")
  420.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  421.         RemoveIniKey ini$, "video", "optimize", cmoNone
  422.     endif
  423.  
  424.     rem Compatibility hacks.
  425.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  426.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  427.  
  428.     rem *** Update INI files for AAPLAY
  429.  
  430.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  431.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  432.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  433.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  434.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  435.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  436.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  437.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  438.  
  439. '$ifdef IsUsingVfW
  440.  
  441.     ''------ Register Video for Windows components -----
  442.     ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  443.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  444.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  445.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  446.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  447.                                    
  448.         '' Mplayer
  449.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  450.  
  451.     END IF    ''NT and next version of Windows installation stop here.
  452.  
  453.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  454. '$endif
  455.  
  456. '$INCLUDE 'install.mst'
  457.  
  458. '$ifdef IsUsingMenu
  459.     CreateMenuIcon AVDest$ + Dir_Binary
  460. '$endif
  461.  
  462.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDestRoot$ + "\uninstal.exe", "", cmoOverwrite
  463. '$ifdef IsUsingOnLineReg
  464.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDestRoot$ + "\onlinreg.exe", "", cmoOverwrite
  465. '$endif
  466.  
  467.     i% = CallModifyCONFIG( HwndFrame() )
  468.  
  469. REM        Run( "notepad  " + SrcDir$ + "readme.txt" )
  470.  
  471. END SUB
  472.                                                                                               
  473. ' -------------------------------------------------------------------------------------------- 
  474. ' -------------------------------------------------------------------------------------------- 
  475. ' -------------------------------------------------------------------------------------------- 
  476. ' Miscellaneous Functions 
  477. ' -------------------------------------------------------------------------------------------- 
  478.  
  479. '**
  480. '** Purpose:
  481. '**     Appends a file name to the end of a directory path,
  482. '**     inserting a backslash character as needed.
  483. '** Arguments:
  484. '**     szDir$  - full directory path (with optional ending "\")
  485. '**     szFile$ - filename to append to directory
  486. '** Returns:
  487. '**     Resulting fully qualified path name.
  488. '*************************************************************************
  489. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  490.     IF szDir$ = "" THEN
  491.         MakePath = szFile$
  492.     ELSEIF szFile$ = "" THEN
  493.         MakePath = szDir$
  494.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  495.         MakePath = szDir$ + szFile$
  496.     ELSE
  497.         MakePath = szDir$ + "\" + szFile$
  498.     END IF
  499. END FUNCTION
  500.  
  501. SUB UpdateWinG32(szOrig$) STATIC
  502.     '
  503.     ' Check the version of wing32.dll since cannot get version
  504.     ' checking for Win32 apps from Win16
  505.     '
  506.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  507.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  508.  
  509.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  510.         RemoveFile FileOrig$, cmoForce
  511.     ELSE
  512.         RemoveFile FileNew$, cmoForce
  513.         RenameFilePlease FileOrig$, FileNew$
  514.     END IF
  515. END SUB                                                                
  516.                                                         
  517.                                                      
  518. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  519.  
  520.     ramSize% = getSystemRAM()
  521.     ramSizeStr$ = str$( ramSize% )
  522.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  523.  
  524.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  525.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  526.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  527.  
  528.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  529.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  530.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  531.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  532.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  533.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  534.  
  535.     CreateTitleINIFile = 0                                              
  536.     
  537. END FUNCTION                                               
  538.  
  539. sub CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ ) static
  540.  
  541.     rem *** Copy list for Accusoft Pro Gold
  542.  
  543.     AddSectionFilesToCopyList sectAccusoft$, SrcDir$, pathBinary$
  544.  
  545. '$ifdef IsEncrypted
  546.     rem *** Copy list for C-Dilla
  547.  
  548.     AddSectionFilesToCopyList Sect_CDillaSystem, SrcDir$, WinDir$
  549.     AddSectionFilesToCopyList sectCDilla$, SrcDir$, pathBinary$
  550. '$endif
  551.  
  552.     rem *** Copy list for AV ENGINE
  553.  
  554.     AddSectionFilesToCopyList sectEngine$, SrcDir$, pathBinary$
  555.  
  556.     rem *** Copy list for title
  557.  
  558.     AddSectionFilesToCopyList sectBinary$, SrcDir$, pathBinary$
  559.  
  560.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 0, 1 )
  561.  
  562. end sub
  563.  
  564. sub CopyTitleDatabase(pathDatabase$, sectDatabase$ ) static
  565.  
  566.     AddSectionFilesToCopyList sectDatabase$, SrcDir$, pathDatabase$
  567.  
  568. end sub
  569.  
  570. sub InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ ) static
  571.  
  572.     CDDrive$ = MID$(SrcDir$,1,1)          
  573.  
  574.     CreateDir pathRoot$, cmoNone
  575.     CreateDir pathBinary$, cmoNone
  576.     CreateDir pathDatabase$, cmoNone
  577.     dummy% = CreateTitleINIFile( pathBinary$+"\"+iniFile$, CDDrive$, pathDatabase$ )
  578.  
  579.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  580.  
  581.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  582.  
  583.     rem *** create unitdb.mbf in title database directory to aid performance
  584.  
  585. rem    CopyFile pathDatabase+"\unitbase.mbf", pathDatabase+"\unitdb.mbf", cmoOverwrite, 0
  586.  
  587. end sub
  588.  
  589. sub CreateMenuIcon( pathBinary$ ) static
  590.  
  591.     dim    PMI_Title as string
  592.     dim    PMI_ReadMe as string
  593.     dim    Cmd_ReadMe as string
  594.  
  595.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  596.  
  597.     PMI_Title = string$( 110, 32 )
  598.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  599.  
  600.     rem *** Create Program Manager Group
  601.  
  602.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  603.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  604.     
  605.     rem *** Create Icon(s)
  606.  
  607.     s% = pmDeleteItem( PMI_Title )
  608.  
  609.     CreateProgmanItem PMG_FlagTower, PMI_Title, AVDest$ + "\prommenu.exe" + " " + AVDest$, "", cmoOverwrite
  610.  
  611.     rem *** Icon for readme
  612.  
  613.     PMI_ReadMe = PMI_Title + " - Read me"
  614.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  615.  
  616.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  617.  
  618. end sub
  619.  
  620. sub CreateTitleIcon( pathBinary$, dllFile$, iconNo$ ) static
  621.  
  622.     dim    PMI_Title as string
  623.     dim    PMI_ReadMe as string
  624.     dim    Cmd_ReadMe as string
  625.  
  626.     PMI_Title = string$( 110, 32 )
  627.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  628.  
  629.     rem *** Create Program Manager Group
  630.  
  631.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  632.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  633.     
  634.     rem *** Create Icon(s)
  635.  
  636.     s% = pmDeleteItem( PMI_Title )
  637.  
  638.     TitleDLL$ = pathBinary$+"\"+dllFile$
  639.     Launch$   = pathBinary$+"\LAUNCH.EXE "
  640.  
  641.     if len( iconNo$ ) = 1 then
  642.  
  643. '$ifdef IsEncrypted
  644.         Other$    = pathBinary$+"\ZLAUNCH.EXE "
  645. '$else
  646.         Other$    = Launch$
  647. '$endif
  648.  
  649.         Other$    = Other$ + "," + iconNo$
  650.  
  651.     else
  652.  
  653.         Other$ = pathBinary$ + iconNo$ + ",0"
  654.  
  655.     end if
  656.  
  657.     Other$ = Other$ + ",0,0," + pathBinary$
  658.  
  659.     rem *** Icon for title
  660.  
  661.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$, Other$, cmoOverwrite
  662.  
  663.     rem *** Icon for readme
  664.  
  665.     PMI_ReadMe = PMI_Title + " - Read me"
  666.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  667.  
  668.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  669.  
  670. end sub
  671.  
  672. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  673. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  674.     ''Video for Windows tests
  675.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  676.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  677.         END
  678.     END IF
  679.  
  680.     'Prevents installation on 286
  681.     IF ProcType% < 3 THEN
  682.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  683.         END
  684.     END IF
  685.  
  686.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  687.     IF OnWindowsNT() THEN
  688.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  689.       IF WowVersion$ = "" THEN
  690.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  691.          END
  692.       END IF
  693.     END IF
  694.  
  695. END FUNCTION
  696.